var basiccode =[ [ "1 - boot up cold boot etc", " ", "", "C", "", "" ],[ "2 - Yes, Spencer IS cool", " ", "10 for f=1 to 10", "20 print \"Spencer is cool\"", "30 next f" ],[ "3 - Look! I can count!", " ", "10 for z=1 to 1000", "20 print z;", "30 next z" ],[ "4 - Now anyone can be cool!", " ", "10 input a$", "20 print a$;\" is cool\"", "30 goto 10" ],[ "5 - Pretty colour say Hello", "5 CLS", "10 XO=10", "20 XI=20", "30 YO=30", "40 YI=40", "100 FOR Z=1 TO 15", "110 INK=Z:ROW=Z:COL=Z", "120 PAPER=15-Z:GOSUB 1050", "130 GOSUB 1100", "140 GOSUB 1000", "150 PRINT \"Hello\"", "160 NEXT Z", "998 GOSUB 3000", "999 END", "1000 REM Ink Colour", "1010 LET INK$=STR$(INK)", "1020 PRINT CHR$(27)+\"[38;5;\";RIGHT$(INK$,LEN(INK$)-1);\"m\";", "1030 RETURN", "1050 REM Paper Colour", "1060 PAPER$=STR$(PAPER)", "1070 PRINT CHR$(27)+\"[48;5;\"+RIGHT$(PAPER$,LEN(PAPER$)-1)+\"m\";", "1080 RETURN", "1100 REM Move Row - Col", "1110 LET ROW$=STR$(ROW):LET COL$=STR$(COL)", "1120 PRINT CHR$(27)+\"[\";RIGHT$(ROW$,LEN(ROW$)-1);\";\";", "1130 PRINT RIGHT$(COL$,LEN(COL$)-1);\"H\";", "1140 RETURN", "2000 REM Draw Line", "2010 XO$=STR$(XO):XI$=STR$(XI):YO$=STR$(YO):YI$=STR$(YI)", "2020 PRINT CHR$(27)+\"[?#\"+RIGHT$(XO$,LEN(XO$)-1)+\";\";", "2025 PRINT RIGHT$(XI$,LEN(XI$)-1)+\";\";", "2030 PRINT RIGHT$(YO$,LEN(YO$)-1)+\";\";", "2035 PRINT RIGHT$(YI$,LEN(YI$)-1);\"L\";", "2040 RETURN", "3000 REM Reset to default", "3010 PRINT CHR$(27);CHR$(91);CHR$(48);CHR$(109)", "3020 RETURN" ],[ "6 Art is pretty", "10 PRINT CHR$(203.5+RND(1));:GOTO 10 ", ],[ "7 Mandlebrot", " 10 MAXITER=20", "20 LET C$=\" .,'~!^:;[/<&?oxOX# \"", "30 FOR Y=-39 TO 39", "40 FOR X=-39 TO 39", "50 CREAL=X/20", "70 CIMAG=Y/20", "80 ZREAL = CREAL", "90 ZIMAG = CIMAG", "95 COUNT = 1", "100 ZM = ZREAL*ZREAL", "105 ZN = ZIMAG*ZIMAG", "107 ZL = ZM+ZN", "110 IF ZL>4 THEN GOTO 170", "120 ZR2=ZM-ZN+CREAL", "130 ZIMAG=ZREAL*ZIMAG*2+CIMAG", "140 ZREAL=ZR2", "150 COUNT=COUNT+1", "160 IF COUNT4 THEN GOTO 165", "120 ZR2=ZM-ZN+CREAL", "130 ZIMAG=ZREAL*ZIMAG*2+CIMAG", "140 ZREAL=ZR2", "150 COUNT=COUNT+1", "160 IF COUNT0 THEN LET DELAY=SQR(INP(0))*50", "120 NEXT Z", "130 RETURN ", ],[ "12 Hex Loader", "clear", "10 let mb=-2048", "20 for l=1 to 69", "30 input \"\";a,b,c,d", "31 poke mb, a", "32 poke mb+1, b", "33 poke mb+2, c", "34 poke mb+3, d", "35 let mb=mb+4", "40 next l", "50 poke -32696,195", "60 poke -32695,0", "70 poke -32694,248", "run", "243,33,255,255", "249,62,150,211", "128,243,33,214", "248,205,154,248", "205,137,248,125", "254,58,194,16", "248,221,33,0", "0,205,164,248", "68,77,205,164", "248,85,205,164", "248,93,205,164", "248,125,254,1", "40,41,254,0", "32,50,205,164", "248,125,18,19", "11,62,0,176", "177,254,0,32", "241,62,124,205", "126,248,205,164", "248,221,125,254", "0,32,30,62", "42,205,126,248", "195,16,248,205", "164,248,33,13", "249,205,154,248", "33,0,128,233", "33,249,248,205", "154,248,195,122", "248,33,3,249", "205,154,248,195", "122,248,0,195", "122,248,245,219", "128,203,79,40", "250,241,211,129", "201,245,219,128", "203,71,40,250", "219,129,38,0", "111,205,126,248", "241,201,126,183", "200,205,126,248", "35,195,154,248", "245,213,205,137", "248,125,214,48", "254,10,56,2", "214,7,87,205", "137,248,125,214", "48,254,10,56", "2,214,7,95", "203,34,203,34", "203,34,203,34", "178,209,38,0", "111,241,197,6", "0,77,221,9", "193,201,72,69", "88,32,76,79", "65,68,69,82", "32,98,121,32", "70,105,108,105", "112,112,111,32", "66,101,114,103", "97,109,97,115", "99,111,10,13", "0,10,13,73", "78,86,32,84", "89,80,0,10", "13,66,65,68", "32,67,72,75", "0,10,13,79", "75,0,0,0", ],[ "13 Run machine code", "print usr(0) ", ],[ "14 Space", ":10800000F321FFFFF9C33E80F5DB80CB4F28FAF167", ":10801000D381C9F5DB80CB4728FADB8126006FF1DD", ":10802000C97DCD0880C92E00DB80CB47C82E01C991", ":10803000C54DED4068C1C9C54C45ED41C1C9ED73A1", ":108040002182212382018C001E00CDF58021258212", ":10805000018000CD6380CD2581C3D480E5E1ED7B37", ":108060002182C95D54E5C50E01CD0681DA858021E6", ":10807000060019EBC109AF2B772B77EB7323722323", ":10808000CDCA80E1C9E1E1CD8D8023C9E12E09C3CC", ":108090009780E1E1E12EFF2600222382C3A280E146", ":1080A000E1E121FFFF37C9E1E1E1E121000037C94A", ":1080B000E1C97723772377237723772377237723E0", ":1080C00077237723772377237723772377237723E0", ":1080D0007723C9E911A7821AB7CA5C80E56F260029", ":1080E000291947562B5E2BC5E5EBCDD380E1C11096", ":1080F000F2E1C35C8078B17B5D54C877130B78B133", ":10810000C8E5EDB0E1C979E6F8201579E607281051", ":10811000AFCDC6802B2B2B36FE2B2B71210000C937", ":1081200021010037C9210A0022AD8221F881CD3515", ":1081300081C32B81C97EB7C8CF23C335813E00B42C", ":10814000B528273E000118FCCD5B81019CFFCD5B6B", ":10815000810EF6CD5B8148C365813C0938FCED4258", ":10816000B7C8C36A810938F2ED42C630CF3E00C9B4", ":108170007CCD7F817CCD83817DCD7F817D18041F67", ":108180001F1F1FF6F027C6A0CE40CFC9CDE8812122", ":108190000482CD3581C9CDE88121FF81CD3581C9EA", ":1081A000CDE881210982CD3581C9E5CDE881210C59", ":1081B00082CD3581E1CD3D813E6DCFC9E5CDE881F0", ":1081C000211282CD3581E1CD3D813E6DCFC9CDE813", ":1081D00081D1C1E1D5C5CD3D813E3BCFE1CD3D81D2", ":1081E0003E48CFE1E5E5E5C93E1BCF3E5BCFC9097F", ":1081F000454E4F4C434B000048454C4C4F21003FEF", ":1082000032356C003F32356800324A0033383B3536", ":108210003B0034383B353B0000258200001B8201C7", ":00000001FF", ],[ "15 Mastermind", "10 CLS", "20 GOTO 160", "25 GUESS = 0", "30 LET Y=0", "40 LET X=0", "50 FOR N=1 TO 4", "60 IF A$(N)=B$(N) THEN GOTO 130", "70 FOR M=1 TO 4", "80 IF M<>N AND A$(N)=B$(M) THEN GOTO 110", "90 NEXT M", "100 GOTO 140", "110 LET Y=Y+1", "120 GOTO 140", "130 LET X=X+1", "140 NEXT N", "150 RETURN", "160 REM rand", "190 FOR N=1 TO 4", "200 LET B$(N)=RIGHT$(STR$(INT(10*RND(1))),1)", "210 FOR M=1 TO 4", "220 IF B$(M)=B$(N) AND N<>M THEN GOTO 200", "230 NEXT M", "240 NEXT N", "250 CLS", "260 PRINT \"**** X Y\"", "270 INPUT A$", "272 GUESS=GUESS+1", "275 GOSUB 350", "280 GOSUB 30", "290 PRINT A$;\" \";X;\" \";Y", "300 IF X<>4 THEN GOTO 270", "310 PRINT \"CORRECT!\"", "315 PRINT \"YOU TOOK \";GUESS;\" GUESSES\"", "320 PRINT \"HIT RETURN TO START AGAIN\"", "330 INPUT A$", "340 RUN", "350 FOR F=1 TO 4", "360 LET A$(F)=MID$(A$,F,1)", "380 NEXT F", "390 RETURN ", ],[ "16 Space", " ", ],[ "17 Space", " ", ],[ "18 Space", " ", ],[ "19 Space", " ", ],[ "20 Space", " ", ],[ "21 Space", " ", ],[ "22 Space", " ", ],[ "23 Space", " ", ],[ "Row/col/colour subroutines", "999 END", "1000 REM Ink Colour", "1010 LET INK$=STR$(INK)", "1020 PRINT CHR$(27)+\"[38;5;\";RIGHT$(INK$,LEN(INK$)-1);\"m\";", "1030 RETURN", "1050 REM Paper Colour", "1060 PAPER$=STR$(PAPER)", "1070 PRINT CHR$(27)+\"[48;5;\"+RIGHT$(PAPER$,LEN(PAPER$)-1)+\"m\";", "1080 RETURN", "1100 REM Move Row - Col", "1110 LET ROW$=STR$(ROW):LET COL$=STR$(COL)", "1120 PRINT CHR$(27)+\"[\";RIGHT$(ROW$,LEN(ROW$)-1);\";\";", "1130 PRINT RIGHT$(COL$,LEN(COL$)-1);\"H\";", "1140 RETURN", "2000 REM Draw Line", "2010 XO$=STR$(XO):XI$=STR$(XI):YO$=STR$(YO):YI$=STR$(YI)", "2020 PRINT CHR$(27)+\"[?#\"+RIGHT$(XO$,LEN(XO$)-1)+\";\";", "2025 PRINT RIGHT$(XI$,LEN(XI$)-1)+\";\";", "2030 PRINT RIGHT$(YO$,LEN(YO$)-1)+\";\";", "2035 PRINT RIGHT$(YI$,LEN(YI$)-1);\"L\";", "2040 RETURN", "3000 REM Reset to default", "3010 PRINT CHR$(27);CHR$(91);CHR$(48);CHR$(109)", "3020 RETURN", ],[ "25 - Run baby, run!", "run"] ]; serial.redirect(SerialPin.P15, SerialPin.P13, BaudRate.BaudRate115200); let bank = 0; basic.forever(() => { let ypos = bank / 5; let xpos = bank - ypos * 5; led.plot(xpos, ypos); input.onButtonPressed(Button.B, () => { bank = bank + 1; if (bank == 25) { bank = 0; } led.unplot(xpos, ypos); }); input.onButtonPressed(Button.A, () => { bank = bank - 1; if (bank == 0) { bank = 25; } led.unplot(xpos, ypos); }); input.onButtonPressed(Button.AB, () => { led.unplot(xpos, ypos); basic.clearScreen(); basic.showLeds(` # # . . . # # # # . # # # # # # # # # . # # . . . `); for (let i = 1; i < basiccode[bank].length; i++) { serial.writeString(basiccode[bank][i]); serial.writeString(String.fromCharCode(13)); serial.writeString(String.fromCharCode(10)); basic.pause(10); } basic.pause(500); basic.clearScreen(); }); });